package com.hhkj.admin.course.service.extend;

import com.hhkj.admin.course.domain.Course;
import com.hhkj.admin.course.model.dopo.CourseDo;
import com.hhkj.admin.course.model.dopo.CoursePo;
import com.ruoyi.common.base.biz.service.extend.BaseExtendService;

import java.util.List;

/**
 * CourseServiceExtend
 *
 * @author HHKJ-SERVER-ZJ
 * @since 2023/6/8 8:51
 */
public interface CourseExtendService extends BaseExtendService<Course, CourseDo, CoursePo>
{

    /**
     * 获取课程结构化名称列表
     *
     * @return 课程列表信息
     */
    List<Course> listAllWithStructureName();

    /**
     * 根据上级id获取课程列表
     *
     * @param parentId 上级id
     * @return 类型id列表
     */
    List<Course> listLevelNumThirdByParentIdNotDisable(Long parentId);

    /**
     * 根据上级id获取课程列表
     *
     * @param parentId 上级id
     * @return 类型id列表
     */
    List<Course> listByParentId(Long parentId);

    /**
     * 根据上级id获取课程列表
     *
     * @param parentId    上级id
     * @param disableFlag 禁用标签
     * @return 类型id列表
     */
    List<Course> listByParentId(Long parentId, Integer disableFlag);

    /**
     * 根据id获取课程信息，课程信息不为null
     *
     * @param id 课程数据id
     * @return 课程信息
     */
    Course getLevelNumSecondByIdNotDisable(Long id);

    /**
     * 根据id获取课程信息，课程信息不为null
     *
     * @param id 课程数据id
     * @return 课程信息
     */
    Course getLevelNumThirdByIdNotDisable(Long id);

    /**
     * 根据id获取课程信息，课程信息不为null
     *
     * @param id 课程数据id
     * @return 课程信息
     */
    Course getByIdNotDisable(Long id);

    /**
     * 查询全部未禁用的科目名称 （level_num=3）
     *
     * @param course 科目名称
     * @return 全部科目列表
     */
    List<Course> listPoAllCourseByDo(Course course);
}
